package AtomicDemo.AtomicIntegerFieldUpdaterDemo;

import java.util.concurrent.atomic.AtomicIntegerFieldUpdater;

/**
 * @Author: ylc
 * @Description:
 * @Date Created in 2022-05-14 15:56
 */
public class MyThread extends Thread{
    /*
       AtomicIntegerUpdater可以对原子正整数字段进行更新
           字段必须使用volatile修饰 ，使线程之间可见。
           只能是实例变量，不能是静态变量，也不能使用final修饰。
    */
    private User user;
    AtomicIntegerFieldUpdater<User> updater = AtomicIntegerFieldUpdater.newUpdater(User.class,"age");

    public MyThread(User user) {
        this.user = user;
    }

    @Override
    public void run() {
        //在子线程中对user对象的age字段自增10次
        for (int i = 0; i < 10; i++) {
            System.out.println(updater.getAndIncrement(user));
        }
    }
}
